<?php
/**
 * 韦德教育  权限管理控制器
 *
 * @author 窦子滨 <zibin_5257@163.com>
 * 
 */
class QuanxianAction extends Action{
    function _initialize()  //控制器初始化方法，进行权限的认证
    {
         $System=D('System');
         $System->check_qx_model($_SESSION['qx_id'],1,8);
    }
    /**
     * 权限组管理首页
     */
    public function index(){
        $Quanxian=M('Quanxian');
        $list=$Quanxian->order('qx_px_no')->field('qx_id,qx_name,qx_px_no')->select();
        $User=M('User');
        for($i=0;$i<count($list);$i++){
            //获取该权限组总的用户数量
            $list[$i]['sum_num']=$User->where("qx_id={$list[$i]['qx_id']}")->count();
            //获取该权限组禁止登录OA的用户数量
            $list[$i]['disableoa_num']=$User->where("qx_id={$list[$i]['qx_id']} and login_disable='y'")->count();
        }
        $this->assign('qx_list', $list);
        $this->display();
    }

    /**
     * 保存增加的权限组
     *
     * @var int $_POST['qx_px_no'] 权限排序位置
     * @var string $_POST['qx_name'] 权限名称
     */
    public function save_qx(){
        $data['qx_px_no']=addslashes($_POST['qx_px_no']);
        $data['qx_name']=addslashes($_POST['qx_name']);
        if(!is_numeric($data['qx_px_no'])){
            pop('排序号必须为整数！','javascript:history.go(-1);');
        }else{
            $Quanxian=M('Quanxian');
            if($Quanxian->where("qx_name='{$data['qx_name']}'")->count()>0){
                pop('该权限组名称已经存在，请添加其他权限组以示区分！','javascript:history.go(-1);');
            }else{
                if($Quanxian->add($data)){
                    pop('权限组添加成功！',U('quanxian/index'));
                }else{
                    pop('系统错误，尝试重新保存或联系系统管理员！','javascript:history.go(-1);');
                }
            }
        }
    }

    /**
     * 删除权限组，检测权限组下是否存在用户，存在则不删除
     * @var int $_GET['id']  权限组id
     */
    function del_qx(){
        $qx_id=addslashes($_GET['id']);
        if(!is_numeric($qx_id)){
            pop('传递变量错误，返回重新操作！',U('quanxian/index'));
        }
        $User=M('User');
        if($User->where("qx_id={$qx_id}")->count()>0){
            pop('该权限组下存在用户，请清除属于该权限组的用户权限！',U('quanxian/index'));
        }
        $Quanxian=M('Quanxian');
        if($Quanxian->delete($qx_id)){
            //S("qx_list_{$qx_id}",NULL);
            $Cache=D('Cache');
            $Cache->set_quanxian($qx_id,NULL);
            pop('权限组删除成功！',U('quanxian/index'));
        }else{
            pop('系统错误，请核对后重新删除！','javascript:history.go(-1);');
        }
    }

    /**
     * 编辑权限组界面
     *
     * @var int $_GET['id'] 权限组id
     */
    function edit_qx(){
        //获取编辑的权限组id
        $qx_id=addslashes($_GET['id']);
        if(!is_numeric($qx_id)){
            pop('变量传递错误，请返回重新操作！', U('quanxian/index'));
        }
        
        $Quanxian=M('Quanxian');
        //检测权限组是否存在，以防止对不存在的权限组出现
        if($Quanxian->where("qx_id={$qx_id}")->count()==0){
            pop('该权限组不存在，请返回后重新操作！', U('quanxian/index'));
        }

        $this->assign($Quanxian->where("qx_id={$qx_id}")->field('qx_id,qx_name,qx_px_no')->find());

        $this->display();
    }

    /**
     * 保存修改的权限组
     *@var int $_POST['qx_id'] 权限id
     * @var int $_POST['qx_px_no'] 权限排序位置
     * @var string $_POST['qx_name'] 权限名称
     */
    public function save_editqx(){
        $data['qx_id']=addslashes($_POST['qx_id']);
        $data['qx_px_no']=addslashes($_POST['qx_px_no']);
        $data['qx_name']=addslashes($_POST['qx_name']);
        if(!is_numeric($data['qx_px_no'])){
            pop('排序号必须为整数！','javascript:history.go(-1);');
        }else{
            $Quanxian=M('Quanxian');
            if($Quanxian->save($data)){
                //S("qx_list_{$data['qx_id']}",NULL);
                $Cache=D('Cache');
                $Cache->set_quanxian($data['qx_id'],NULL);
                pop('权限组修改成功！',U('quanxian/index'));
            }else{
                pop('权限组信息无修改，无需保存！',U('quanxian/index'));
            }
        }
    }


    /**
     * 权限克隆功能  克隆给定的权限id
     *
     * @var integer $_GET['id'] 权限组id
     */
    public function copy_qx(){
        $qx_id=(integer)  addslashes($_GET['id']);
        $Quanxian=M('Quanxian');
        $data=$Quanxian->where("qx_id={$qx_id}")->find();
        //保留原权限组名称
        $qx_name=$data['qx_name'];
        unset ($data['qx_id']);
        $data['qx_name']='X'.$data['qx_name'].'副本';
        if($Quanxian->add($data)){
            pop($qx_name.'-权限组克隆成功！', U('quanxian/index'));
        }else{
            pop($qx_name.'-权限组克隆失败，请联系技术部咨询！', U('quanxian/index'));
        }
    }


    /**
     * 设置权限组权限框架界面
     *
     * @var integer $_GET['id']  权限组id
     */
    function config_qx(){
        $qx_id=(integer) addslashes($_GET['id']);
        //将qx_id的id传入到框架
        $this->assign('qx_id', $qx_id);
        $this->display();
    }

    /**
     * 设置权限框架中的左侧模块级导航列表
     *
     * @var integer $_GET['id'] 权限组id
     */
    function left(){
        $qx_id=(integer) $_GET['id'];
        $Cache=D('Cache');
        $qx_info=$Cache->get_quanxian($qx_id);
        $this->assign('qx_name',$qx_info['qx_name']);
        $this->assign('qx_id', $qx_id);
        $this->display();
    }

    /**
     * 权限设置界面
     *
     * @var integer $_GET['id'] 权限组id
     * @var integer $_GET['num'] 权限模块id
     */
    public function config(){
        $qx_id=(integer) addslashes($_GET['id']);
        $num=(integer) addslashes($_GET['num']);
        $this->assign('qx_id', $qx_id);
        $Cache=D('Cache');
        $qx_list=$Cache->get_quanxian($qx_id);
        $this->assign('num', $num);
        //将权限值赋值到模板
        $this->assign('qx_num', $qx_list['qx_'.$num]);
        $moban='';  //模板
        $this->display('Quanxian:config_'.$num);
    }

    /**
     * 保存权限设置的权限 通用
     * @var integer $_POST['qx_id'] 权限组id
     * @var array $_POST['system'] 权限值数组
     * @var integer $_POST['num'] 权限字段标识，取尾部'_'后的数字的值
     */
    public function save_config_qx(){
        $qx_id=(integer) addslashes($_POST['qx_id']);
        $no=(integer) addslashes($_POST['num']);
        //各权限值数组
        $data=$_POST['system'];
        //数据库字段尾数值
        $set=(integer) addslashes($_POST['num']);
        //判断是否未设置权限
        if(is_null($data)){
            $num=0;
        }else{
            for($i=0;$i<count($data);$i++){
                $num+=$data[$i];
            }
        }


        $Quanxian=M('Quanxian');  //权限数据模型
        $Cache=D('Cache');  //系统缓存模型
        if($Quanxian->where("qx_id={$qx_id}")->setField("qx_{$no}",$num)){
            $Cache->set_quanxian($qx_id,NULL);
            pop_parent('权限修改成功！', U('quanxian/config_qx?id='.$qx_id));
        }else{
            pop('权限无改变，无需进行保存操作！','javascript:history.go(-1)');
        }
        
    }

    /**
     * 查看特定权限组的全部用户列表
     *
     * @var integer $_GET['id'] 权限组的id
     */
    public function view_all_userlist(){
        $qx_id=(integer) addslashes($_GET['id']);
        $Quanxian=M('Quanxian');
        $qx_info=$Quanxian->field('qx_name')->where("qx_id={$qx_id}")->find();
        $this->assign('qx_name', $qx_info['qx_name']);
        unset ($Quanxian);
        $User=M('User');
        $list=$User->where("qx_id={$qx_id}")->order('user_no desc')->select();
        $UB=M('User_bumen');
        for($i=0;$i<count($list);$i++){
            $list[$i]['bm']=$UB
            ->table('lfy_bumen,lfy_user_bumen')
            ->where("lfy_bumen.bm_id=lfy_user_bumen.bm_id and lfy_user_bumen.user_id={$list[$i]['user_id']}")
            ->field('lfy_bumen.bm_name,lfy_bumen.bm_kind')
            ->order('gx_id')
            ->select();
            //dump($list['bm']);
        }
        //dump($list);
        unset($User);
        $this->assign('user_list', $list);
        unset ($list);
        $this->display();
    }
}
?>
